/**
 * 数据库迁移管理页面
 * 用于将项目数据的字段格式化为小驼峰命名
 */
const cloudHelper = require('../../../config/project_helpers_config').cloudHelper;
const pageHelper = require('../../../config/project_helpers_config').pageHelper;

Page({
  /**
   * 页面的初始数据
   */
  data: {
    migrating: false,
    migrationResult: null
  },

  /**
   * 页面加载
   */
  onLoad(options) {
    // 检查管理员权限
    this.checkAdmin();
  },

  /**
   * 检查是否是管理员
   */
  async checkAdmin() {
    try {
      const admin = await cloudHelper.callCloud('admin/is_admin');
      if (!admin || !admin.result) {
        pageHelper.showNoneToast('此功能需要管理员权限');
        setTimeout(() => {
          wx.navigateBack();
        }, 1500);
      }
    } catch (err) {
      console.error('检查管理员权限出错', err);
      pageHelper.showModal('检查权限出错，请重试');
      setTimeout(() => {
        wx.navigateBack();
      }, 1500);
    }
  },

  /**
   * 执行数据迁移
   */
  async onMigrateData() {
    if (this.data.migrating) return;

    const confirm = await pageHelper.showConfirm('确定要执行数据迁移吗？此操作会将项目数据格式化为标准命名规则。请确保已备份数据！');
    if (!confirm) return;

    try {
      this.setData({ 
        migrating: true,
        migrationResult: null
      });

      const result = await cloudHelper.callCloud('research_project/migrate_data', {}, {});
      console.log('数据迁移结果', result);

      this.setData({
        migrationResult: result.result
      });

      if (result.result && result.result.success) {
        pageHelper.showSuccessToast('迁移成功');
      } else {
        pageHelper.showModal('迁移失败：' + (result.result?.error || '未知错误'));
      }
    } catch (err) {
      console.error('数据迁移出错', err);
      pageHelper.showModal('迁移出错：' + (err.message || '未知错误'));
    } finally {
      this.setData({ migrating: false });
    }
  }
}); 